﻿using Jay.Sc2.Bof.Lib.State;

namespace Jay.Sc2.Bof.Lib.Action.Terran
{
	public abstract class ActionUpgradeFromGhostAcademy : ActionUpgradeFromTerran
	{
		public ActionUpgradeFromGhostAcademy(int researchTime, int minerals, int gas) : base(researchTime, minerals, gas) { }

		public override TerranState.TerranProductionBuilding GetProductionBuilding(TerranState state) { return state.GhostAcademy; }

		public override IAction[,] Requirements
		{
			get
			{
				if (m_Requirements == null)
					m_Requirements = new IAction[,] { { ActionProduceGhostAcademy.Instance } };
				return m_Requirements;
			}
		}
	}
	public class ActionUpgradeMoebiusReactor : ActionUpgradeFromGhostAcademy
	{
		public static ActionUpgradeMoebiusReactor Instance = new ActionUpgradeMoebiusReactor();

		public ActionUpgradeMoebiusReactor() : base(80, 100, 100) { }

		public override TerranState.TerranUpgrade GetUpgrade(TerranState state) { return state.MoebiusReactor; }
		public override string EventName { get { return "ActionResearchedMoebiusReactor"; } }
	}
	public class ActionUpgradePersonalCloaking : ActionUpgradeFromGhostAcademy
	{
		public static ActionUpgradePersonalCloaking Instance = new ActionUpgradePersonalCloaking();

		public ActionUpgradePersonalCloaking() : base(120, 150, 150) { }

		public override TerranState.TerranUpgrade GetUpgrade(TerranState state) { return state.PersonalCloaking; }
		public override string EventName { get { return "ActionResearchedPersonalCloaking"; } }
	}

}
